package br.unicamp.ic.inf312.arena.persistencia.dao;

import java.sql.Timestamp;
import java.util.List;

import br.unicamp.ic.inf312.arena.modelo.vendas.Bilhete;
import br.unicamp.ic.inf312.arena.modelo.vendas.Compra;
import br.unicamp.ic.inf312.arena.modelo.vendas.Estorno;
import br.unicamp.ic.inf312.framework.persistencia.IDAOBase;

public interface ICompraDAO extends IDAOBase {
	public static final String TABELA_BD = "compra";

	public static final String COLUMN_CODIGO_PK = "numprotocolo";
	public static final String COLUMN_DATA_HORA = "dataHora";
	public static final String COLUMN_CODIGO_PAGTO = "codpagto";

	/**
	 * Recupera compra
	 * 
	 * @param numProtocolo
	 * @return Compra
	 */
	public Compra obter(long numProtocolo) throws Exception;
	
	/**
	 * 
	 * @param compra
	 * @return Compra
	 */
	public boolean inserir(Compra compra) throws Exception;
	
	/**
	 * 
	 * @param dataHora
	 * @param codPagto
	 * @return boolean
	 * @throws Exception
	 */
	public boolean inserir(Timestamp dataHora, int codPagto) throws Exception;
	
	/**
	 * 
	 * @return long
	 * @throws Exception
	 */
	public long obterProximoNumeroProtocolo() throws Exception;
	
	//TODO: Alteracao para a ativ. 11
	public Estorno devolver(Compra compra, List<Bilhete> bilhetes) throws Exception;
}